package com.sacodemel.financeiro.persistencia.dao.impl;

import com.sacodemel.financeiro.modelo.RegistroCaixa;

import com.sacodemel.financeiro.persistencia.dao.IRegistroCaixaDAO;
import com.sacodemel.financeiro.util.Constantes;
import java.util.List;

import org.hibernate.Session;


public class RegistroCaixaDAO extends BaseDAO<RegistroCaixa> implements IRegistroCaixaDAO{


        public RegistroCaixaDAO() {
		super(RegistroCaixa.class);
		
	}
    
          @SuppressWarnings("unchecked")
	public List<RegistroCaixa> listarReceitas() throws Exception {
		
		Session session = null;
		try {
			session = getSession();
                        
                        session.beginTransaction();
                        
			List<RegistroCaixa> obj = (List<RegistroCaixa>) session.createQuery(
					"from RegistroCaixa r " +
                                        " left join fetch r.investidor  " +
                                        " where r.status = '"+Constantes.STATUS_ATIVO+"' and tipoRegistroCaixa =  '" + Constantes.REGISTRO_RECEITA+"'").list();
			
                        
                        
			return obj;
			
		} catch (Exception e) {
			throw e;
		} finally {
			close(session);
		}
		
	}

    @Override
    public List<RegistroCaixa> listarDespesas()  throws Exception{
        	Session session = null;
		try {
			session = getSession();
                        
                        session.beginTransaction();
                        
			List<RegistroCaixa> obj = (List<RegistroCaixa>) session.createQuery(
					"from RegistroCaixa r " +
                                        " where r.status = '"+Constantes.STATUS_ATIVO+"' and tipoRegistroCaixa =  '" + Constantes.REGISTRO_DESPESA+"'").list();
			
                        
                        
			return obj;
			
		} catch (Exception e) {
			throw e;
		} finally {
			close(session);
		}
		
	
    }

    @Override
    public List<RegistroCaixa> listarRegistrosPorInvestidor(Integer id)  throws Exception{
        
        Session session = null;
	
        try {
			session = getSession();
                        
                        session.beginTransaction();
                        
			List<RegistroCaixa> obj = (List<RegistroCaixa>) session.createQuery(
					"from RegistroCaixa r " +
                                        " join fetch r.investidor  " +
                                        " where r.status = '"+Constantes.STATUS_ATIVO+"' and r.investidor.id =  " + id ).list();
			
                        
                        
			return obj;
			
		} catch (Exception e) {
			throw e;
		} finally {
			close(session);
		}
		
    }

}
